<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Grafico {

    var $total_tables = array();

    public function __construct() {
        $this->CI = & get_instance();
        $this->CI->config->load('database_tables');
        $this->total_tables = $this->CI->config->item('dbtables');
    }

    function get_array_visitas($mes, $ano) {
        $empresa = $this->CI->ion_auth->user()->row()->company;
        $this->CI->db->select("*, count(1) as 'contador', date_format(fecha, '%d') as 'dia', descripcion", false);
        $this->CI->db->from($this->total_tables['visitas_producto']);
        $this->CI->db->join($this->total_tables['producto'], $this->total_tables['visitas_producto'].'.fk_id_producto = '.$this->total_tables['producto'].'.id');
        $this->CI->db->where($this->total_tables['visitas_producto'].'.fk_id_empresa', $empresa);
        $this->CI->db->where("date_format(fecha, '%m') = ".$mes);
        $this->CI->db->where("date_format(fecha, '%Y') = ".$ano);
        $this->CI->db->order_by("fk_id_producto", "asc");
        $this->CI->db->order_by("fecha", "asc");
        $this->CI->db->group_by("fecha");
        $query = $this->CI->db->get();

        $cadena = "";
        $flotr = "";
        $producto = 0;
        $cont = 0;

        $mes_vacio = false;
        
        $diasdelmes = date("t", strtotime('01-'.$mes.'-'.$ano));
        $dias_visitas = array();
        $descripcion_producto = array();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                //Si hay un cambio de producto cerramos la cadena anterior y creamos una nueva variable.
                if ($producto != $row['fk_id_producto']) {
                    $producto = $row['fk_id_producto'];
                    $dias_visitas[$cont] = $this->crear_array_visitas($diasdelmes);
                    $descripcion_producto[$cont] = $row['descripcion'];
                    $cont++;
                }
                $dias_visitas[$cont-1][$row['dia']-1] = array(intval($row['dia']), intval($row['contador']));
            }
        } else {
            $dias_visitas[$cont] = $this->crear_array_visitas($diasdelmes);
            $descripcion_producto[$cont] = "";
            $mes_vacio = true;
        }

        for ($x = 0; $x < count($dias_visitas); $x++) {
            $cadena .= "var a" . $x . "= " . json_encode($dias_visitas[$x]) . ";";
            $flotr = "[{ data: a" . $x . ", label: '".$descripcion_producto[$x]."'}],";
        }
        return array($cadena, substr($flotr, 0, -1), $this->get_conf_grafico($diasdelmes, $mes_vacio, $mes, $ano));
    }

    public function crear_array_visitas($diasdelmes) {
        
        $dias = array();
        for ($x = 1; $x <= $diasdelmes; $x++) {
            $dias[] = array($x, 0);
        }
        return $dias;
    }
    
    public function get_conf_grafico($diasdelmes, $mes_vacio, $mes, $ano){
        return "{
                xaxis: {
                    tickDecimals: 0,
                    noTicks: ".$diasdelmes.",
                    min: 1
                },
                yaxis: {
                    tickDecimals: 0,
                    min: 0,
                    ".($mes_vacio ? "max: 3" : "")."
                },
                grid: {
                    minorVerticalLines: true
                },
                lines: {
                    show: true,
                    lineWidth: 3	
                },
                mouse: {
                    track: true,
                    trackDecimals: 0,
                    radius: 13
                },
                legend: {
                    position: 'se',
                    backgroundColor: '#D2E8FF'
                },
                HtmlText: false,
                title: '".lang('mes'.$mes)." ".$ano."',
                colors: ['#2C93E1', '#1C7F8E', '#C71585', '#CD5C5C', '#9440ED'],
                shadowSize: 4
            }";
    }

}